home *** CD-ROM | disk | FTP | other *** search
/ The PC-SIG Library 10 / The PC-Sig Library - Shareware for the IBM PC and Compatibles (PC-SIG)(Tenth Edition Disks 1-2804)(1991).iso / PC_SIGCD / 19 / 8 / DISK1982.ZIP / VIODEMO.PAS < prev   
Pascal/Delphi Source File  |  1991-03-15  |  32KB  |  1,200 lines

  1. {--------------------------------------------------------------------}
  2. {- Before compiling this demo program make sure the Unit Directories-}
  3. {- in the Options, Directories menu specify where to find the       -}
  4. {- FlashPac Units.                                                  -}
  5. {-                                                                  -}
  6. {- Compiler       Directory                                         -}
  7. {- --------       -----------------                                 -}
  8. {-  TP4           A:\TP4                                            -}
  9. {-  TP5           A:\TP5                                            -}
  10. {-  TP55          A:\TP55                                           -}
  11. {-                                                                  -}
  12. {--------------------------------------------------------------------}
  13.  
  14. program testit;
  15. uses crt,dos,FPVideo,FPGetKey;
  16. Type
  17.    Str4  = String[4];
  18.    TCell = Record
  19.               Ch,Attr : Byte;
  20.            End;
  21. Var
  22.    i,j,i1            : integer;
  23.    k                 : Word;
  24.    ChOfs,TE          : Integer;
  25.    St                : String;
  26.    H1,M1,S1,Sec100_1,
  27.    H2,M2,S2,Sec100_2 : Word;
  28.    t1,t2,t3,Total    : Word;
  29.    Done              : Boolean;
  30.  
  31. Procedure ClearTime;
  32. Begin
  33.    H1       := 0;  H2       := 0;
  34.    M1       := 0;  M2       := 0;
  35.    S1       := 0;  S2       := 0;
  36.    Sec100_1 := 0;  Sec100_2 := 0;
  37.    Total    := 0;
  38.  
  39. End;
  40.  
  41. Function Dec_To_Hex(Number : Word) : Str4;
  42. Const
  43.    Digits : String[16] = '0123456789ABCDEF';
  44. Var
  45.    i  : Word;
  46.    St : String[4];
  47. Begin
  48.    FillChar(St,SizeOf(St),0);
  49.    For i := 4 DownTo 1 Do Begin
  50.       St[i] := Digits[Number Mod 16 + 1];
  51.       Number := Number Div 16;
  52.    End;
  53.    St[0] := Chr(4);
  54.    Dec_To_Hex := St;
  55. End;
  56.  
  57. Procedure DisplayTime(NTimes : Integer);
  58. Var
  59.    Ch  : Char;
  60.    Tot : Real;
  61. Begin
  62.    Window(15,10,65,14);
  63.    ClrWin(15,10,65,14,48);
  64.    FrameWin('╔','╗','╚','╝','═','║',48);
  65.    TextAttr := 48;
  66.    Gotoxy(1,1);
  67.    Writeln('  Total Time   = ',Total:1);
  68.    Writeln('  NTimes       = ',NTimes:1);
  69.    Tot := Total / NTimes;
  70.    Write('  Average time = ',Tot:7:4,' hundredths of a second');
  71.    ColorMsg(18,14,144,' Press any key to continue... ');
  72.    Ch := ReadKey;
  73.    TextAttr := 7;
  74. End;
  75.  
  76. Procedure TestBorderColor;
  77. Var
  78.    i  : Integer;
  79.    Ch : Char;
  80. Begin
  81.    If VioMode = 7 Then Begin
  82.          ClrWin(1,1,80,25,7);
  83.          Window(21,11,60,14);
  84.          ClrWin(21,11,60,14,48);
  85.          FrameWin('╔','╗','╚','╝','═','║',48);
  86.          ColorMsg(23,12,48,'Not Available on Monochrome monitors');
  87.          ColorMsg(23,13,48,'    Press any key to continue...');
  88.          Window(1,1,80,25);
  89.       End
  90.    Else Begin
  91.       For i := 1 To 15 Do Begin
  92.          BorderColor(i);
  93.          Writeln('Press any key to continue...');
  94.          Ch := ReadKey;
  95.       End;
  96.    End;
  97.    Ch := ReadKey;
  98.    BorderColor(0);
  99. End;
  100.  
  101. Procedure TestClrWin;
  102. Var
  103.    Color,TopRow,BottomRow,LeftCol,RightCol : Integer;
  104.    Ch                                      : Char;
  105. Begin
  106.    ClrWin(1,1,80,25,7);
  107.    Gotoxy(1,1);
  108.    Write('Enter attribute value to clear screen with. 0-255 ==> ');
  109.    Readln(Color);
  110.    Write('Enter top row of area to clear. 1-25 ==> ');
  111.    Readln(TopRow);
  112.    Write('Enter left column of area to clear.  1-80 ==> ');
  113.    Readln(LeftCol);
  114.    Write('Enter bottom row of area to clear. ',TopRow:1,'-25 ==> ');
  115.    Readln(BottomRow);
  116.    Write('Enter right column of area to clear.  ',LeftCol:1,'-80 ==> ');
  117.    Readln(RightCol);
  118.    FillRowCell(1,1,2000,(65 shl 8) + 7);
  119.    ColorMsg(1,1,48,'Press any key to clear area');
  120.    Ch := ReadKey;
  121.    ClrWin(LeftCol,TopRow,RightCol,BottomRow,Color);
  122.    ColorMsg(1,1,48,'Press any key to return to menu');
  123.    Ch := ReadKey;
  124. End;
  125.  
  126. Procedure TestColorMsg;
  127. Var
  128.    Msg   : String;
  129.    Ch    : Char;
  130.    Color : Integer;
  131. Begin
  132.    TextAttr := 7;
  133.    Repeat
  134.       ClrWin(1,1,80,25,7);
  135.       Gotoxy(1,1);
  136.       Window(10,1,69,3);
  137.       FrameWin('╔','╗','╚','╝','═','║',TextAttr);
  138.       ColorMsg(12,2,TextAttr,'Enter "QUIT" for message when you ' +
  139.                              'want to quit this test');
  140.       Window(1,4,60,7);
  141.       FrameWin('╔','╗','╚','╝','═','║',TextAttr);
  142.       ColorMsg(3,4,TextAttr,' ColorMsg data ');
  143.       ColorMsg(3,5,TextAttr,'Enter message to display ==> ');
  144.       Gotoxy(31,1);
  145.       Readln(Msg);
  146.       ColorMsg(3,6,TextAttr,'Enter the color to display message in ==> ');
  147.       Gotoxy(44,2);
  148.       Readln(Color);
  149.  
  150.       Window(1,10,50,14);
  151.       FrameWin('╔','╗','╚','╝','═','║',TextAttr);
  152.       ColorMsg(3,11,Color,Msg);
  153.       TextAttr := RvsAttr(TextAttr);
  154.       ColorMsg(2,13,TextAttr,'          ' +
  155.                              'Press any key to continue...          ');
  156.       TextAttr := RvsAttr(TextAttr);
  157.       Ch := ReadKey;
  158.       For Color := 1 To 4 Do
  159.          Msg[Color] := UpCase(Msg[Color]);
  160.    Until Msg = 'QUIT'
  161. End;
  162.  
  163. Procedure TestEditSt;
  164. Const
  165.    TCSet : TSet = [13];
  166.    VCSet : TSet = [32,65..122];
  167. Var
  168.    Ch          : Char;
  169.    Char_Ofs,TE : Integer;
  170.    St          : String;
  171. Begin
  172.    ClrWin(1,1,80,25,7);
  173.    ColorMsg(1,10,7,'Enter your name:');
  174.    St       := '';
  175.    Char_Ofs := 1;
  176.    TE       := 0;
  177.    FillChar(St,SizeOf(St),0);
  178.    EditSt(10,18,28,30,1,7,0,7000,2000,VCSet,TCSet,Char_Ofs,TE,St);
  179.    GotoxyAbs(1,15);
  180.    WriteLn('*',St,'*','  len = ',Length(St):1 );
  181.    TextAttr := RvsAttr(TextAttr);
  182.    Ch := ReadKey;
  183. End;
  184.  
  185. Procedure TestFillColAttr;
  186. Const
  187.    NTimes = 80;
  188. Var
  189.    i : Integer;
  190.  
  191. Begin
  192.    ClrWin(1,1,80,25,7);
  193.    ClearTime;
  194.    For i := 1 To NTimes Do Begin
  195.  
  196.       GetTime(H1,M1,S1,Sec100_1);
  197.       FillColAttr(i,1,25,i*16);
  198.       GetTime(H2,M2,S2,Sec100_2);
  199.  
  200.       If (Sec100_2 > Sec100_1) Or ((S1 = S2) And (Sec100_1 = Sec100_2)) Then
  201.          Total := Total + (Sec100_2 - Sec100_1)
  202.       Else begin
  203.          t1 := 100 - Sec100_1 + Sec100_2;
  204.          Total := Total + t1;
  205.       End;
  206.    End;
  207.    DisplayTime(NTimes);
  208. End;
  209.  
  210. Procedure TestFillColCell;
  211. Const
  212.    NTimes = 80;
  213. Var
  214.    i      : Word;
  215. Begin
  216.    ClrWin(1,1,80,25,7);
  217.    ClearTime;
  218.    For i := 1 To NTimes Do Begin
  219.  
  220.       GetTime(H1,M1,S1,Sec100_1);
  221.       FillColCell(i,1,25,((i+64) shl 8) + i);
  222.       GetTime(H2,M2,S2,Sec100_2);
  223.  
  224.       If (Sec100_2 > Sec100_1) Or ((S1 = S2) And (Sec100_1 = Sec100_2)) Then
  225.          Total := Total + (Sec100_2 - Sec100_1)
  226.       Else begin
  227.          t1 := 100 - Sec100_1 + Sec100_2;
  228.          Total := Total + t1;
  229.       End;
  230.    End;
  231.    DisplayTime(NTimes);
  232. End;
  233.  
  234. Procedure TestFillColChar;
  235. Const
  236.    NTimes = 80;
  237. Var
  238.    i      : Integer;
  239. Begin
  240.    ClrWin(1,1,80,25,7);
  241.    ClearTime;
  242.    For i := 1 To NTimes Do Begin
  243.  
  244.       GetTime(H1,M1,S1,Sec100_1);
  245.       FillColChar(i,1,25,Chr(i+64));
  246.       GetTime(H2,M2,S2,Sec100_2);
  247.  
  248.       If (Sec100_2 > Sec100_1) Or ((S1 = S2) And (Sec100_1 = Sec100_2)) Then
  249.          Total := Total + (Sec100_2 - Sec100_1)
  250.       Else begin
  251.          t1 := 100 - Sec100_1 + Sec100_2;
  252.          Total := Total + t1;
  253.       End;
  254.    End;
  255.    DisplayTime(NTimes);
  256. End;
  257.  
  258. Procedure TestFillFrameAttr;
  259. Const
  260.    NTimes = 15;
  261. Var
  262.    i      : Integer;
  263. Begin
  264.    ClrWin(1,1,80,25,7);
  265.    ClearTime;
  266.    For i := 1 To NTimes Do Begin
  267.  
  268.       GetTime(H1,M1,S1,Sec100_1);
  269.       FillFrameAttr(1,1,80,25,i*16);
  270.       GetTime(H2,M2,S2,Sec100_2);
  271.  
  272.       If (Sec100_2 > Sec100_1) Or ((S1 = S2) And (Sec100_1 = Sec100_2)) Then
  273.          Total := Total + (Sec100_2 - Sec100_1)
  274.       Else begin
  275.          t1 := 100 - Sec100_1 + Sec100_2;
  276.          Total := Total + t1;
  277.       End;
  278.    End;
  279.    DisplayTime(NTimes);
  280. End;
  281.  
  282. Procedure TestFillFrameCell;
  283. Const
  284.    NTimes = 15;
  285. Var
  286.    i      : Integer;
  287. Begin
  288.    ClrWin(1,1,80,25,7);
  289.    ClearTime;
  290.    For i := 1 To NTimes Do Begin
  291.  
  292.       GetTime(H1,M1,S1,Sec100_1);
  293.       FillFrameCell(1,1,80,25,((i+64) shl 8) + i);
  294.       GetTime(H2,M2,S2,Sec100_2);
  295.  
  296.       If (Sec100_2 > Sec100_1) Or ((S1 = S2) And (Sec100_1 = Sec100_2)) Then
  297.          Total := Total + (Sec100_2 - Sec100_1)
  298.       Else begin
  299.          t1 := 100 - Sec100_1 + Sec100_2;
  300.          Total := Total + t1;
  301.       End;
  302.    End;
  303.    DisplayTime(NTimes);
  304. End;
  305.  
  306. Procedure TestFillFrameChar;
  307. Const
  308.    NTimes = 15;
  309. Var
  310.    i      : Integer;
  311. Begin
  312.    ClrWin(1,1,80,25,7);
  313.    ClearTime;
  314.    For i := 1 To NTimes Do Begin
  315.  
  316.       GetTime(H1,M1,S1,Sec100_1);
  317.       FillFrameChar(1,1,80,25,Chr(i+64));
  318.       GetTime(H2,M2,S2,Sec100_2);
  319.  
  320.       If (Sec100_2 > Sec100_1) Or ((S1 = S2) And (Sec100_1 = Sec100_2)) Then
  321.          Total := Total + (Sec100_2 - Sec100_1)
  322.       Else begin
  323.          t1 := 100 - Sec100_1 + Sec100_2;
  324.          Total := Total + t1;
  325.       End;
  326.    End;
  327.    DisplayTime(NTimes);
  328. End;
  329.  
  330. Procedure TestFillRowAttr;
  331. Const
  332.    NTimes = 15;
  333. Var
  334.    i      : Integer;
  335. Begin
  336.    ClrWin(1,1,80,25,7);
  337.    ClearTime;
  338.    For i := 1 To NTimes Do Begin
  339.  
  340.       GetTime(H1,M1,S1,Sec100_1);
  341.       FillRowAttr(1,1,2000,i*16);
  342.       GetTime(H2,M2,S2,Sec100_2);
  343.  
  344.       If (Sec100_2 > Sec100_1) Or ((S1 = S2) And (Sec100_1 = Sec100_2)) Then
  345.          Total := Total + (Sec100_2 - Sec100_1)
  346.       Else begin
  347.          t1 := 100 - Sec100_1 + Sec100_2;
  348.          Total := Total + t1;
  349.       End;
  350.    End;
  351.    DisplayTime(NTimes);
  352. End;
  353.  
  354. Procedure TestFillRowCell;
  355. Const
  356.    NTimes = 15;
  357. Var
  358.    i      : Integer;
  359. Begin
  360.    ClrWin(1,1,80,25,7);
  361.    ClearTime;
  362.    For i := 1 To NTimes Do Begin
  363.  
  364.       GetTime(H1,M1,S1,Sec100_1);
  365.       FillRowCell(1,1,2000,((64+i) shl 8) + i);
  366.       GetTime(H2,M2,S2,Sec100_2);
  367.  
  368.       If (Sec100_2 > Sec100_1) Or ((S1 = S2) And (Sec100_1 = Sec100_2)) Then
  369.          Total := Total + (Sec100_2 - Sec100_1)
  370.       Else begin
  371.          t1 := 100 - Sec100_1 + Sec100_2;
  372.          Total := Total + t1;
  373.       End;
  374.    End;
  375.    DisplayTime(NTimes);
  376. End;
  377.  
  378. Procedure TestFillRowChar;
  379. Const
  380.    NTimes = 15;
  381. Var
  382.    i      : Integer;
  383. Begin
  384.    ClrWin(1,1,80,25,7);
  385.    ClearTime;
  386.    For i := 1 To NTimes Do Begin
  387.  
  388.       GetTime(H1,M1,S1,Sec100_1);
  389.       FillRowChar(1,1,2000,Chr(i+64));
  390.       GetTime(H2,M2,S2,Sec100_2);
  391.  
  392.       If (Sec100_2 > Sec100_1) Or ((S1 = S2) And (Sec100_1 = Sec100_2)) Then
  393.          Total := Total + (Sec100_2 - Sec100_1)
  394.       Else begin
  395.          t1 := 100 - Sec100_1 + Sec100_2;
  396.          Total := Total + t1;
  397.       End;
  398.    End;
  399.    DisplayTime(NTimes);
  400. End;
  401.  
  402. Procedure TestGetFrameAttr;
  403. Const
  404.    NTimes = 15;
  405. Var
  406.    i      : Integer;
  407.    Buffer : Array[1..25,1..80] Of Byte;
  408. Begin
  409.    ClrWin(1,1,80,25,7);
  410.    ClearTime;
  411.    For i := 1 To NTimes Do Begin
  412.       FillRowCell(1,1,2000,((i+64) shl 8) + i*16);
  413.  
  414.       GetTime(H1,M1,S1,Sec100_1);
  415.       GetFrameAttr(1,1,80,25,Buffer);
  416.       GetTime(H2,M2,S2,Sec100_2);
  417.  
  418.       If (Sec100_2 > Sec100_1) Or ((S1 = S2) And (Sec100_1 = Sec100_2)) Then
  419.          Total := Total + (Sec100_2 - Sec100_1)
  420.       Else begin
  421.          t1 := 100 - Sec100_1 + Sec100_2;
  422.          Total := Total + t1;
  423.       End;
  424.    End;
  425.    DisplayTime(NTimes);
  426. End;
  427.  
  428. Procedure TestGetFrameCell;
  429. Const
  430.    NTimes = 15;
  431. Var
  432.    i      : Integer;
  433.    Buffer : Array[1..25,1..80] Of TCell;
  434. Begin
  435.    ClrWin(1,1,80,25,7);
  436.    ClearTime;
  437.    For i := 1 To NTimes Do Begin
  438.       FillRowCell(1,1,2000,((i+64) shl 8) + i*16);
  439.  
  440.       GetTime(H1,M1,S1,Sec100_1);
  441.       GetFrameCell(1,1,80,25,Buffer);
  442.       GetTime(H2,M2,S2,Sec100_2);
  443.  
  444.       If (Sec100_2 > Sec100_1) Or ((S1 = S2) And (Sec100_1 = Sec100_2)) Then
  445.          Total := Total + (Sec100_2 - Sec100_1)
  446.       Else begin
  447.          t1 := 100 - Sec100_1 + Sec100_2;
  448.          Total := Total + t1;
  449.       End;
  450.    End;
  451.    DisplayTime(NTimes);
  452. End;
  453.  
  454. Procedure TestGetFrameChar;
  455. Const
  456.    NTimes = 15;
  457. Var
  458.    i      : Integer;
  459.    Buffer : Array[1..25,1..80] Of Char;
  460. Begin
  461.    ClrWin(1,1,80,25,7);
  462.    ClearTime;
  463.    For i := 1 To NTimes Do Begin
  464.       FillRowCell(1,1,2000,((i+64) shl 8) + i*16);
  465.  
  466.       GetTime(H1,M1,S1,Sec100_1);
  467.       GetFrameChar(1,1,80,25,Buffer);
  468.       GetTime(H2,M2,S2,Sec100_2);
  469.  
  470.       If (Sec100_2 > Sec100_1) Or ((S1 = S2) And (Sec100_1 = Sec100_2)) Then
  471.          Total := Total + (Sec100_2 - Sec100_1)
  472.       Else begin
  473.          t1 := 100 - Sec100_1 + Sec100_2;
  474.          Total := Total + t1;
  475.       End;
  476.    End;
  477.    DisplayTime(NTimes);
  478. End;
  479.  
  480. Procedure TestGetScrn;
  481. Const
  482.    NTimes = 30;
  483. Var
  484.    i      : Integer;
  485.    Buffer : Array[1..25,1..80] Of TCell;
  486. Begin
  487.    ClrWin(1,1,80,25,7);
  488.    ClearTime;
  489.    For i := 1 To NTimes Do Begin
  490.  
  491.       FillRowChar(1,1,2000,Chr(i+64));
  492.       GetTime(H1,M1,S1,Sec100_1);
  493.       GetScrn(1,1,2000,Buffer);
  494.       GetTime(H2,M2,S2,Sec100_2);
  495.  
  496.       If (Sec100_2 > Sec100_1) Or ((S1 = S2) And (Sec100_1 = Sec100_2)) Then
  497.          Total := Total + (Sec100_2 - Sec100_1)
  498.       Else begin
  499.          t1 := 100 - Sec100_1 + Sec100_2;
  500.          Total := Total + t1;
  501.       End;
  502.    End;
  503.    DisplayTime(NTimes);
  504.  
  505. End;
  506.  
  507. Procedure TestPutScrn;
  508. Const
  509.    NTimes = 30;
  510. Var
  511.    i      : Integer;
  512.    Buffer : Array[1..25,1..80] Of TCell;
  513. Begin
  514.    ClrWin(1,1,80,25,7);
  515.    ClearTime;
  516.    For i := 1 To NTimes Do Begin
  517.  
  518.       FillRowChar(1,1,2000,Chr(i+64));
  519.       GetScrn(1,1,2000,Buffer);
  520.       FillRowChar(1,1,2000,Chr(0));
  521.  
  522.       GetTime(H1,M1,S1,Sec100_1);
  523.       PutScrn(1,1,2000,Buffer);
  524.       GetTime(H2,M2,S2,Sec100_2);
  525.  
  526.       If (Sec100_2 > Sec100_1) Or ((S1 = S2) And (Sec100_1 = Sec100_2)) Then
  527.          Total := Total + (Sec100_2 - Sec100_1)
  528.       Else begin
  529.          t1 := 100 - Sec100_1 + Sec100_2;
  530.          Total := Total + t1;
  531.       End;
  532.    End;
  533.    DisplayTime(NTimes);
  534. End;
  535.  
  536. Procedure TestPutFrameAttr;
  537. Const
  538.    NTimes = 15;
  539. Var
  540.    i      : Integer;
  541.    Buffer : Array[1..25,1..80] Of Byte;
  542. Begin
  543.    ClrWin(1,1,80,25,7);
  544.    ClearTime;
  545.    For i := 1 To NTimes Do Begin
  546.       FillRowCell(1,1,2000,((i+64) shl 8) + i*16);
  547.       GetFrameAttr(1,1,80,25,Buffer);
  548.       ClrWin(1,1,80,25,7);
  549.  
  550.       GetTime(H1,M1,S1,Sec100_1);
  551.       PutFrameAttr(1,1,80,25,Buffer);
  552.       GetTime(H2,M2,S2,Sec100_2);
  553.  
  554.       If (Sec100_2 > Sec100_1) Or ((S1 = S2) And (Sec100_1 = Sec100_2)) Then
  555.          Total := Total + (Sec100_2 - Sec100_1)
  556.       Else begin
  557.          t1 := 100 - Sec100_1 + Sec100_2;
  558.          Total := Total + t1;
  559.       End;
  560.    End;
  561.    DisplayTime(NTimes);
  562. End;
  563.  
  564. Procedure TestPutFrameCell;
  565. Const
  566.    NTimes = 15;
  567. Var
  568.    i      : Integer;
  569.    Buffer : Array[1..25,1..80] Of TCell;
  570. Begin
  571.    ClrWin(1,1,80,25,7);
  572.    ClearTime;
  573.    For i := 1 To NTimes Do Begin
  574.       FillRowCell(1,1,2000,((i+64) shl 8) + i);
  575.       GetFrameCell(1,1,80,25,Buffer);
  576.  
  577.       ClrWin(1,1,80,25,7);
  578.       GetTime(H1,M1,S1,Sec100_1);
  579.       PutFrameCell(1,1,80,25,Buffer);
  580.       GetTime(H2,M2,S2,Sec100_2);
  581.  
  582.       If (Sec100_2 > Sec100_1) Or ((S1 = S2) And (Sec100_1 = Sec100_2)) Then
  583.          Total := Total + (Sec100_2 - Sec100_1)
  584.       Else begin
  585.          t1 := 100 - Sec100_1 + Sec100_2;
  586.          Total := Total + t1;
  587.       End;
  588.    End;
  589.    DisplayTime(NTimes);
  590. End;
  591.  
  592. Procedure TestPutFrameChar;
  593. Const
  594.    NTimes = 15;
  595. Var
  596.    i      : Integer;
  597.    Buffer : Array[1..25,1..80] Of Char;
  598. Begin
  599.    ClrWin(1,1,80,25,7);
  600.    ClearTime;
  601.    For i := 1 To NTimes Do Begin
  602.       FillRowCell(1,1,2000,((i+64) shl 8) + i*16);
  603.       GetFrameChar(1,1,80,25,Buffer);
  604.       ClrWin(1,1,80,25,7);
  605.  
  606.       GetTime(H1,M1,S1,Sec100_1);
  607.       PutFrameChar(1,1,80,25,Buffer);
  608.       GetTime(H2,M2,S2,Sec100_2);
  609.  
  610.       If (Sec100_2 > Sec100_1) Or ((S1 = S2) And (Sec100_1 = Sec100_2)) Then
  611.          Total := Total + (Sec100_2 - Sec100_1)
  612.       Else begin
  613.          t1 := 100 - Sec100_1 + Sec100_2;
  614.          Total := Total + t1;
  615.       End;
  616.    End;
  617.    DisplayTime(NTimes);
  618. End;
  619.  
  620.  
  621. Procedure TestGetCursorSize;
  622. Var
  623.    Ch : Char;
  624. Begin
  625.    ClrWin(1,1,80,25,7);
  626.    Window(24,10,55,14);
  627.    ClrWin(24,10,55,14,48);
  628.    FrameWin('╔','╗','╚','╝','═','║',48);
  629.    Gotoxy(1,1);
  630.    TextAttr := 48;
  631.    ColorMsg(26,10,48,' GetCursorSize ');
  632.    Writeln(' Starting scan line = ',Hi(VioCursor):1);
  633.    Writeln(' Ending scan line   = ',Lo(VioCursor):1);
  634.    Write(' Press any key to continue...');
  635.    Ch := ReadKey;
  636.    TextAttr := 7;
  637. End;
  638.  
  639. Procedure TestSetCursorSize;
  640. Var
  641.    Ch            : Char;
  642.    StScan,SpScan : Integer;
  643. Begin
  644.    ClrWin(1,1,80,25,7);
  645.    Window(24,10,57,14);
  646.    ClrWin(24,10,57,14,48);
  647.    FrameWin('╔','╗','╚','╝','═','║',48);
  648.    Gotoxy(1,1);
  649.    TextAttr := 48;
  650.    ColorMsg(26,10,48,' GetCursorSize ');
  651.    Write(' Enter Starting scan line = ');
  652.    Readln(StScan);
  653.    Write(' Ending scan line   = ');
  654.    Readln(SpScan);
  655.    SetCursorSize(StScan,SpScan);
  656.    Write(' Press any key to continue...');
  657.    Ch := ReadKey;
  658.    TextAttr := 7;
  659. End;
  660.  
  661. Procedure TestFrameWin;
  662. Const
  663.    NTimes = 12;
  664. Var
  665.    i      : Integer;
  666.    tot    : Real;
  667.    Ch     : Char;
  668. Begin
  669.    ClrWin(1,1,80,25,7);
  670.    ClearTime;
  671.    Window(1,1,80,25);
  672.    For i := 1 To NTimes Do Begin
  673. {      Window(i,i,80,25);        }
  674.       GetTime(H1,M1,S1,Sec100_1);
  675.       FrameWin('┌','┐','└','┘','─','│',7);
  676.       GetTime(H2,M2,S2,Sec100_2);
  677.  
  678.       If (Sec100_2 > Sec100_1) Or ((S1 = S2) And (Sec100_1 = Sec100_2)) Then
  679.          Total := Total + (Sec100_2 - Sec100_1)
  680.       Else begin
  681.          t1 := 100 - Sec100_1 + Sec100_2;
  682.          Total := Total + t1;
  683.       End;
  684.    End;
  685.    DisplayTime(NTimes);
  686. End;
  687.  
  688. Procedure TestRvsAttr;
  689. Var
  690.    St    : String;
  691.    Ch    : Char;
  692.    i,j,k : Integer;
  693.    HiCur,LoCur : Integer;
  694. begin
  695.    HiCur := Hi(VioCursor);
  696.    LoCur := Lo(VioCursor);
  697.    SetCursorSize(32,32);
  698.    ClrWin(1,1,80,25,7);
  699.  
  700.    Window(5,2,40,19);
  701.    FrameWin('╔','╗','╚','╝','═','║',7);
  702.    ColorMsg(7,2,7,' Text with normal attributes ');
  703.  
  704.    Window(45,2,80,19);
  705.    FrameWin('╔','╗','╚','╝','═','║',7);
  706.    ColorMsg(47,2,7,' Text with reverse attributes ');
  707.  
  708.    k := 0;
  709.    For j := 1 To 16 Do Begin
  710.       ClrWin(6,3,39,18,7);
  711.       ClrWin(46,3,79,18,7);
  712.       For i := 0 To 15 Do Begin
  713.  
  714.          TextAttr := k;
  715.          Str(TextAttr:3,St);
  716.          ColorMsg( 6,i+3,TextAttr,'        TextAttr = '+St+'            ');
  717.  
  718.          TextAttr := RvsAttr(TextAttr);
  719.          Str(TextAttr:3,St);
  720.          ColorMsg(46,i+3,TextAttr,'       TextAttr = '+St+'             ');
  721.          k := k + 1;
  722.       End;
  723.       Window(25,22,56,24);
  724.       FrameWin('╔','╗','╚','╝','═','║',7);
  725.       ColorMsg(26,23,144,' Press any key to continue... ');
  726.       Ch := ReadKey;
  727.       ClrWin(25,22,56,24,7);
  728.       Delay(200);
  729.    End;
  730.    TextAttr := 6;
  731.    SetCursorSize(LoCur,HiCur);
  732. End;
  733.  
  734. Procedure TestGetVideoMode;
  735. Var
  736.    Ch : Char;
  737.    St : String;
  738. Begin
  739.    ClrWin(1,1,80,25,7);
  740.    Window(20,11,60,13);
  741.    FrameWin('╔','╗','╚','╝','═','║',7);
  742.    Case GetVideoMode Of
  743.       0 : St := '0 - CGA - Text b/w Medium resolution';
  744.       1 : St := '1 - CGA - Text color Medium resolution';
  745.       2 : St := '2 - CGA - Text b/w High resolution';
  746.       3 : St := '3 - CGA - Text color High resolution';
  747.       7 : St := '7 - Monochrome monitor';
  748.    End;
  749.  
  750.    ColorMsg(22,11,TextAttr,' Current video mode ');
  751.    ColorMsg(22,12,TextAttr,St);
  752.    ColorMsg(25,24,TextAttr,'Press any key to continue...');
  753.    Ch := ReadKey;
  754. End;
  755.  
  756. Procedure TestInitVideo;
  757. Var
  758.    Ch        : Char;
  759.    OldMode,
  760.    NewMode,i : Integer;
  761.    St        : String;
  762.    Error     : Boolean;
  763. Begin
  764.    OldMode := GetVideoMode;
  765.    Repeat
  766.       InitVideo(OldMode);
  767.       ClrWin(1,1,80,25,7);
  768.       Window(10,1,60,20);
  769.       FrameWin('╔','╗','╚','╝','═','║',7);
  770.       ColorMsg(12,1,TextAttr,' SetVideoMode ');
  771.       ColorMsg(12,2,TextAttr,' 0 - CGA - Text b/w Medium resolution');
  772.       ColorMsg(12,3,TextAttr,' 1 - CGA - Text color Medium resolution');
  773.       ColorMsg(12,4,TextAttr,' 2 - CGA - Text b/w High resolution');
  774.       ColorMsg(12,5,TextAttr,' 3 - CGA - Text color High resolution');
  775.       ColorMsg(12,6,TextAttr,' 4 - CGA - Graphics Medium resolution');
  776.       ColorMsg(12,7,TextAttr,' 5 - CGA - Graphics Medium resolution');
  777.       ColorMsg(12,8,TextAttr,' 6 - CGA - Graphics High resolution');
  778.       ColorMsg(12,9,TextAttr,' 7 - Monochrome monitor');
  779.       ColorMsg(12,10,TextAttr,' 8 - PCjr - Graphics Low resolution');
  780.       ColorMsg(12,11,TextAttr,' 9 - PCjr - Graphics Medium resolution');
  781.       ColorMsg(12,12,TextAttr,'10 - PCjr,EGA - Graphics High resolution');
  782.       ColorMsg(12,13,TextAttr,'13 - EGA - Graphics Medium resolution');
  783.       ColorMsg(12,14,TextAttr,'14 - EGA - Graphics High resolution');
  784.       ColorMsg(12,15,TextAttr,'15 - EGA - Graphics Extra high resolution');
  785.       ColorMsg(12,16,TextAttr,'16 - Quit');
  786.       ColorMsg(12,18,TextAttr,'Select mode to initialize ==> ');
  787.       GotoxyAbs(42,18);
  788.       Readln(NewMode);
  789.       ClrWin(1,1,80,25,7);
  790.  
  791.       Error := False;
  792.       If OldMode = 7 Then Begin
  793.             If (NewMode <> 7) And (NewMode <> 16) Then
  794.                Error := True;
  795.          End
  796.       Else If NewMode In [8..10] Then
  797.          Error := True
  798.       Else If NewMode > 16 Then
  799.          Error := True;
  800.  
  801.       If Error Then Begin
  802.             Write(#7);
  803.             ColorMsg(1,19,TextAttr,'Invalid mode was entered.  '+
  804.                                    'Press any key to continue');
  805.             Ch := ReadKey;
  806.          End
  807.       Else If NewMode <> 16 Then Begin
  808.          ClrWin(1,1,80,25,7);
  809.          InitVideo(NewMode);
  810.          If NewMode In [4,5,6,8,9,10,13,14,15] Then
  811.             DirectVideo := False;
  812.          For i := 1 to 20 Do
  813.             Writeln('This is the new video mode');
  814.          Write('Press any key to continue...');
  815.          Ch := ReadKey;
  816.          DirectVideo := True;
  817.       End;
  818.  
  819.    Until NewMode = 16;
  820. End;
  821.  
  822. Procedure TestGetVideoCols;
  823. Var
  824.    Ch : Char;
  825.    St : String;
  826. Begin
  827.    ClrWin(1,1,80,25,7);
  828.    Window(24,10,57,13);
  829.    ClrWin(24,10,57,13,48);
  830.    FrameWin('╔','╗','╚','╝','═','║',48);
  831.    Gotoxy(1,1);
  832.    TextAttr := 48;
  833.    ColorMsg(26,10,48,' GetVideoCols ');
  834.    Str(GetVideoCols:1,St);
  835.    WriteLn(' Number of columns = ' + St);
  836.    Write(' Press any key to continue...');
  837.    Ch := ReadKey;
  838.    TextAttr := 7;
  839. End;
  840.  
  841. Procedure TestGetVideoPage;
  842. Var
  843.    Ch : Char;
  844.    St : String;
  845. Begin
  846.    ClrWin(1,1,80,25,7);
  847.    Window(24,10,57,13);
  848.    ClrWin(24,10,57,13,48);
  849.    FrameWin('╔','╗','╚','╝','═','║',48);
  850.    ColorMsg(26,10,48,' GetVideoPage ');
  851.    Str(GetVideoPage:1,St);
  852.    ColorMsg(25,11,48,' Current video page number = ' + St);
  853.    ColorMsg(25,12,48,' Press any key to continue...');
  854.    Ch := ReadKey;
  855.    TextAttr := 7;
  856. End;
  857.  
  858. Procedure TestGetVideoInfo;
  859. Var
  860.    Ch : Char;
  861.    St : String;
  862. Begin
  863.    ClrWin(1,1,80,25,7);
  864.    Window(24,9,57,17);
  865.    ClrWin(24,9,57,17,48);
  866.    FrameWin('╔','╗','╚','╝','═','║',48);
  867.    ColorMsg(26,9,48,' GetVideoInfo ');
  868.  
  869.    Str(GetVideoMode:1,St);
  870.    ColorMsg(25,10,48,' Current mode         = ' + St);
  871.  
  872.    Str(GetVideoPage:1,St);
  873.    ColorMsg(25,11,48,' Active page          = ' + St);
  874.  
  875.    Str(GetVideoCols:1,St);
  876.    ColorMsg(25,12,48,' Number cols          = ' + St);
  877.  
  878.    St := Dec_To_Hex(VioBaseSeg);
  879.    ColorMsg(25,13,48,' Base Segment Address = ' + St);
  880.  
  881.    ColorMsg(25,16,48,' Press any key to continue...');
  882.    Ch := ReadKey;
  883. End;
  884.  
  885. Procedure TestSetVideoPage;
  886. Var
  887.    Ch   : Char;
  888.    St   : String;
  889.    PgNo : Integer;
  890. Begin
  891.    ClrWin(1,1,80,25,7);
  892.    Window(24,8,57,17);
  893.    ClrWin(24,8,57,17,48);
  894.    FrameWin('╔','╗','╚','╝','═','║',48);
  895.    GotoxyAbs(25,10);
  896.    ColorMsg(26,8,48,' SetVideoPage ');
  897.    Str(GetVideoPage:1,St);
  898.    ColorMsg(25,9,48,' Current video page number = ' + St);
  899.    If VioMode In [0..3] Then Begin
  900.          Repeat
  901.             ColorMsg(25,10,48,' Enter new page number ==> ');
  902.             GotoxyAbs(53,10);
  903.             Readln(PgNo);
  904.          Until PgNo In [0..3];
  905.          SetVideoPage(PgNo);
  906.          GotoxyAbs(1,1);
  907.       End
  908.    Else If VioMode = 7 Then Begin
  909.       ClrWin(25,9,56,16,48);
  910.       ColorMsg(25,11,48,' This is the only page allowed ');
  911.       ColorMsg(25,12,48,' for a Monochrome monitor ');
  912.       ColorMsg(25,14,48,'Press any key to continue...');
  913.       Ch := ReadKey;
  914.    End;
  915. End;
  916.  
  917. Procedure TestWhereXYAbs;
  918. Var
  919.    Ch      : char;
  920.    St      : String;
  921.    Row,Col : Integer;
  922. Begin
  923.    ClrWin(1,1,80,25,7);
  924.    FillColChar(1,1,25,'+');
  925.    FillRowCell(1,3,80,(Ord('-') Shl 8)+48);
  926.    Col := 5;
  927.    While Col <= 80 Do Begin
  928.       FillRowChar(Col,3,1,'+');
  929.       Col := Col + 5;
  930.    End;
  931.    ColorMsg(5,6,Textattr, 'Press one of the following keys ');
  932.    ColorMsg(5,7,Textattr, 'to move the cursor:');
  933.    ColorMsg(5,8,Textattr, '    U - move cursor up one line');
  934.    ColorMsg(5,9,Textattr, '    D - move cursor down one line');
  935.    ColorMsg(5,10,Textattr,'    R - move cursor right one column');
  936.    ColorMsg(5,11,Textattr,'    L - move cursor left one column');
  937.    ColorMsg(5,12,Textattr,'   <ENTER> - to return to menu');
  938.    row := 12;
  939.    col := 40;
  940.    Repeat
  941.       GotoxyAbs(col,row);
  942.  
  943.       Str(WhereXAbs:2,St);
  944.       ColorMsg(1,1,TextAttr,'WhereXAbs = ' + St);
  945.  
  946.       Str(WhereYAbs:2,St);
  947.       ColorMsg(1,2,TextAttr,'WhereYAbs = ' + St);
  948.  
  949.       Ch := UpCase(ReadKey);
  950.       Case Ch Of
  951.          'U' : Begin
  952.                   row := row - 1;
  953.                   If row < 1 Then
  954.                      row := 25;
  955.                End;
  956.          'D' : Begin
  957.                   row := row + 1;
  958.                   if row > 25 then
  959.                      row := 1;
  960.                end;
  961.          'L' : begin
  962.                   col := col - 1;
  963.                   if col < 1 then
  964.                      col := 80;
  965.                end;
  966.          'R' : begin
  967.                   col := col + 1;
  968.                   if col > 80 then
  969.                      col := 1;
  970.                end;
  971.       End;
  972.    until ch = Chr(13);
  973. End;
  974.  
  975. Procedure TestScrollLeft;
  976. Const
  977.    NTimes = 15;
  978. Var
  979.    Ch  : Char;
  980.    i,j : Word;
  981. Begin
  982.    ClrWin(1,1,80,25,7);
  983.    ClearTime;
  984.    For i := 1 To NTimes Do Begin
  985.  
  986.       For j := 1 To 80 Do
  987.          FillColCell(j,1,25,((64+j) shl 8) + j);
  988.       Ch := ReadKey;
  989.  
  990.       GetTime(H1,M1,S1,Sec100_1);
  991.       ScrollLeft(1,1,80,25,TextAttr,i);
  992.       GetTime(H2,M2,S2,Sec100_2);
  993.  
  994.       Ch := ReadKey;
  995.  
  996.       If (Sec100_2 > Sec100_1) Or ((S1 = S2) And (Sec100_1 = Sec100_2)) Then
  997.          Total := Total + (Sec100_2 - Sec100_1)
  998.       Else begin
  999.          t1 := 100 - Sec100_1 + Sec100_2;
  1000.          Total := Total + t1;
  1001.       End;
  1002.    End;
  1003.    DisplayTime(NTimes);
  1004. End;
  1005.  
  1006. Procedure TestScrollRight;
  1007. Const
  1008.    NTimes = 15;
  1009. Var
  1010.    Ch  : Char;
  1011.    i,j : Word;
  1012. Begin
  1013.    ClrWin(1,1,80,25,7);
  1014.    ClearTime;
  1015.    For i := 1 To NTimes Do Begin
  1016.  
  1017.       For j := 1 To 80 Do
  1018.          FillColCell(j,1,25,((64+j) shl 8) + j);
  1019.       Ch := ReadKey;
  1020.  
  1021.       GetTime(H1,M1,S1,Sec100_1);
  1022.       ScrollRight(1,1,80,25,TextAttr,i);
  1023.       GetTime(H2,M2,S2,Sec100_2);
  1024.  
  1025.       Ch := ReadKey;
  1026.  
  1027.       If (Sec100_2 > Sec100_1) Or ((S1 = S2) And (Sec100_1 = Sec100_2)) Then
  1028.          Total := Total + (Sec100_2 - Sec100_1)
  1029.       Else begin
  1030.          t1 := 100 - Sec100_1 + Sec100_2;
  1031.          Total := Total + t1;
  1032.       End;
  1033.    End;
  1034. End;
  1035.  
  1036. Procedure TestScrollDown;
  1037. Const
  1038.    NTimes = 15;
  1039. Var
  1040.    Ch     : Char;
  1041.    i,j    : Word;
  1042.    Buffer : Array[1..25,1..80] Of TCell;
  1043. Begin
  1044.    ClrWin(1,1,80,25,7);
  1045.    ClearTime;
  1046.    For i := 1 To 25 Do Begin
  1047.       FillChar( Buffer[i,1], 160, i+64 );
  1048.       For j := 1 To 80 Do
  1049.          Buffer[i,j].Attr := i;
  1050.    End;
  1051.    For i := 1 To NTimes Do Begin
  1052.  
  1053.       PutScrn( 1, 1, 2000, Buffer );
  1054.       Ch := ReadKey;
  1055.  
  1056.       GetTime(H1,M1,S1,Sec100_1);
  1057.       ScrollDown(1,1,80,25,TextAttr,i);
  1058.       GetTime(H2,M2,S2,Sec100_2);
  1059.  
  1060.       Ch := ReadKey;
  1061.  
  1062.       If (Sec100_2 > Sec100_1) Or ((S1 = S2) And (Sec100_1 = Sec100_2)) Then
  1063.          Total := Total + (Sec100_2 - Sec100_1)
  1064.       Else begin
  1065.          t1 := 100 - Sec100_1 + Sec100_2;
  1066.          Total := Total + t1;
  1067.       End;
  1068.    End;
  1069.    DisplayTime(NTimes);
  1070. End;
  1071.  
  1072. Procedure TestScrollUp;
  1073. Const
  1074.    NTimes = 15;
  1075. Var
  1076.    Ch     : Char;
  1077.    i,j    : Word;
  1078.    Buffer : Array[1..25,1..80] Of TCell;
  1079. Begin
  1080.    ClrWin(1,1,80,25,7);
  1081.    ClearTime;
  1082.    For i := 1 To 25 Do Begin
  1083.       FillChar( Buffer[i,1], 160, i+64 );
  1084.       For j := 1 To 80 Do
  1085.          Buffer[i,j].Attr := i;
  1086.    End;
  1087.  
  1088.    For i := 1 To NTimes Do Begin
  1089.  
  1090.       PutScrn( 1, 1, 2000, Buffer );
  1091.       Ch := ReadKey;
  1092.  
  1093.       GetTime(H1,M1,S1,Sec100_1);
  1094.       ScrollUp(1,1,80,25,TextAttr,i);
  1095.       GetTime(H2,M2,S2,Sec100_2);
  1096.  
  1097.       Ch := ReadKey;
  1098.  
  1099.       If (Sec100_2 > Sec100_1) Or ((S1 = S2) And (Sec100_1 = Sec100_2)) Then
  1100.          Total := Total + (Sec100_2 - Sec100_1)
  1101.       Else begin
  1102.          t1 := 100 - Sec100_1 + Sec100_2;
  1103.          Total := Total + t1;
  1104.       End;
  1105.    End;
  1106.    DisplayTime(NTimes);
  1107. End;
  1108.  
  1109. Procedure TestWriteSt;
  1110. Var
  1111.    Ch : Char;
  1112.    i  : Integer;
  1113. Begin
  1114.    ClrWin(1,1,80,25,7);
  1115.    GotoxyAbs(1,1);
  1116.    for i := 1 to 80 do
  1117.       WriteSt('This is a test...');
  1118.    ch := readkey;
  1119. End;
  1120.  
  1121. Procedure TestWriteStLn;
  1122. var
  1123.    i : integer;
  1124.    ch : char;
  1125. Begin
  1126.    ClrWin(1,1,80,25,7);
  1127.    GotoxyAbs(1,1);
  1128.    for i := 1 to 24 do begin
  1129.       WriteStLn('This is a test...');
  1130.    end;
  1131.    ch := readkey;
  1132. End;
  1133.  
  1134. Function GetMenuSelection : Integer;
  1135. Var
  1136.    Item : integer;
  1137. Begin
  1138.    Item := 0;
  1139.    TextAttr := 7;
  1140.    Repeat
  1141.       ClrWin(1,1,80,25,7);
  1142.       Window(1,1,80,25);
  1143.       GotoxyAbs(1,1);
  1144.       WriteStLn(' ');
  1145.       WriteStln(' 1. BorderColor       2. ClrWin             3. ColorMsg');
  1146.       WriteStln(' 4. EditSt');
  1147.       WriteStln(' 5. FillColAttr       6. FillColCell        7. FillColChar');
  1148.       WriteStln(' 8. FillFrameAttr     9. FillFrameCell     10. FillFrameChar');
  1149.       WriteStln('11. FillRowAttr      12. FillRowCell       13. FillRowChar');
  1150.       WriteStln('14. GetFrameAttr     15. GetFrameCell      16. GetFrameChar');
  1151.       WriteStln('17. GetScrn          18. PutScrn');
  1152.       WriteStln('19. PutFrameAttr     20. PutFrameCell      21. PutFrameChar');
  1153.       WriteStln('22. GetCursorSize    23. SetCursorSize     24. FrameWin');
  1154.       WriteStln('25. RvsAttr          26. GetVideoMode      27. GetVideoCols');
  1155.       WriteStln('28. GetVideoPage     29. GetVideoInfo      30. InitVideo');
  1156.       WriteStln('31. SetVideoPage     32. GotoxyAbs');
  1157.       WriteStln('33. WhereXAbs        34. WhereYAbs');
  1158.       WriteStln('35. ScrollLeft       36. ScrollRight');
  1159.       WriteStln('37. ScrollDown       38. ScrollUp');
  1160.       WriteStln('39. WriteSt          40. WriteStLn');
  1161.       WriteStln('41. Quit');
  1162.       WriteStln(' ');
  1163.       WriteSt('Enter selection to test ==> ');
  1164.       Readln(Item);
  1165.    Until Item In [1..41];
  1166.    GetMenuSelection := Item;
  1167. End;
  1168.  
  1169. begin
  1170.    DirectVideo := False;
  1171.    ClrWin(1,1,80,25,7);
  1172.    GotoxyAbs(1,1);
  1173.    Done := False;
  1174.    While Not Done Do Begin
  1175.       Case GetMenuSelection Of
  1176.           1 : TestBorderColor;        2 : TestClrWin;
  1177.           3 : TestColorMsg;           4 : TestEditSt;
  1178.           5 : TestFillColAttr;        6 : TestFillColCell;
  1179.           7 : TestFillColChar;        8 : TestFillFrameAttr;
  1180.           9 : TestFillFrameCell;     10 : TestFillFrameChar;
  1181.          11 : TestFillRowAttr;       12 : TestFillRowCell;
  1182.          13 : TestFillRowChar;       14 : TestGetFrameAttr;
  1183.          15 : TestGetFrameCell;      16 : TestGetFrameChar;
  1184.          17 : TestGetScrn;           18 : TestPutScrn;
  1185.          19 : TestPutFrameAttr;      20 : TestPutFrameCell;
  1186.          21 : TestPutFrameChar;      22 : TestGetCursorSize;
  1187.          23 : TestSetCursorSize;     24 : TestFrameWin;
  1188.          25 : TestRvsAttr;           26 : TestGetVideoMode;
  1189.          27 : TestGetVideoCols;      28 : TestGetVideoPage;
  1190.          29 : TestGetVideoInfo;      30 : TestInitVideo;
  1191.          31 : TestSetVideoPage;      32 : TestWhereXYAbs;
  1192.          33 : TestWhereXYAbs;        34 : TestWhereXYAbs;
  1193.          35 : TestScrollLeft;        36 : TestScrollRight;
  1194.          37 : TestScrollDown;        38 : TestScrollUp;
  1195.          39 : TestWriteSt;           40 : TestWriteStLn;
  1196.          41 : Done := True;
  1197.       End;
  1198.    End;
  1199. End.
  1200.